์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ์น์ฌ์ดํธ๋ฅผ ๋ณดํธํ๊ณ ์ ์ธ๊ณ ์ฌ์ฉ์๋ฅผ ์ํ ๋ณด์์ ๊ฐํํ๋ ์น ๋ณด์ ํค๋ ๊ตฌํ์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์ด๋์ ๋๋ค.
์น ๋ณด์ ํค๋: ์ค์ฉ์ ์ธ ๊ตฌํ ๊ฐ์ด๋
์ค๋๋ ์ ๋์งํธ ํ๊ฒฝ์์ ์น ๋ณด์์ ๋ฌด์๋ณด๋ค ์ค์ํฉ๋๋ค. ์น์ฌ์ดํธ๋ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ (XSS), ํด๋ฆญ์ฌํน, ๋ฐ์ดํฐ ์ฃผ์ ๋ฑ ๋ค์ํ ๊ณต๊ฒฉ์ ํ์ ์ด ๋๊ณ ์์ต๋๋ค. ์น ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์ด๋ฌํ ์ํ์ ์ํํ๊ณ ์ฌ์ฉ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๋ฐ ์ค์ํ ๋จ๊ณ์ ๋๋ค. ์ด ๊ฐ์ด๋์์๋ ์ฃผ์ ๋ณด์ ํค๋์ ๋ํ ํฌ๊ด์ ์ธ ๊ฐ์์ ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค.
์น ๋ณด์ ํค๋๋ ๋ฌด์์ธ๊ฐ?
์น ๋ณด์ ํค๋๋ ์น์ฌ์ดํธ์ ์ฝํ ์ธ ๋ฅผ ์ฒ๋ฆฌํ ๋ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์ด๋ป๊ฒ ๋์ํด์ผ ํ๋์ง ์ง์ํ๋ HTTP ์๋ต ํค๋์ ๋๋ค. ์ด๋ ๊ท์น ์งํฉ์ฒ๋ผ ์๋ํ์ฌ ๋ธ๋ผ์ฐ์ ์ ํ์ฉ๋๋ ์์ ๊ณผ ๊ธ์ง๋๋ ์์ ์ ์๋ ค์ค๋๋ค. ์ด๋ฌํ ํค๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ํ๋ฉด ์น์ฌ์ดํธ์ ๊ณต๊ฒฉ ํ๋ฉด์ ํฌ๊ฒ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ๋ณด์ ํ์ธ๋ฅผ ๊ฐ์ ํ ์ ์์ต๋๋ค. ๋ณด์ ํค๋๋ ๊ธฐ์กด ๋ณด์ ์กฐ์น๋ฅผ ๊ฐํํ๊ณ ์ผ๋ฐ์ ์ธ ์น ์ทจ์ฝ์ ์ ๋ํ ์ถ๊ฐ์ ์ธ ๋ฐฉ์ด ๊ณ์ธต์ ์ ๊ณตํฉ๋๋ค.
๋ณด์ ํค๋๋ ์ ์ค์ํ๊ฐ?
- ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ ์ํ: ๋ณด์ ํค๋๋ XSS, ํด๋ฆญ์ฌํน, MIME ์ค๋ํ ๊ณต๊ฒฉ๊ณผ ๊ฐ์ ๋ง์ ์ผ๋ฐ์ ์ธ ์น ๊ณต๊ฒฉ์ ํจ๊ณผ์ ์ผ๋ก ์ฐจ๋จํ๊ฑฐ๋ ์ํํ ์ ์์ต๋๋ค.
- ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด ๋ณดํธ ๊ฐํ: ์ผ๋ถ ํค๋๋ ๋ฆฌํผ๋ฌ ์ ๋ณด๋ฅผ ์ ์ดํ๊ณ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๋ํ ์ ๊ทผ์ ์ ํํ์ฌ ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์น์ฌ์ดํธ ๋ณด์ ํ์ธ ๊ฐ์ : ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋ณด์์ ๋ํ ์ฝ์์ ๋ณด์ฌ์ฃผ๋ฉฐ ์น์ฌ์ดํธ์ ํํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
- ๊ท์ ์ค์ ์๊ตฌ ์ฌํญ: GDPR ๋ฐ PCI DSS์ ๊ฐ์ ๋ง์ ๋ณด์ ํ์ค ๋ฐ ๊ท์ ์์๋ ๋ณด์ ํค๋์ ์ฌ์ฉ์ ์๊ตฌํ๊ฑฐ๋ ๊ถ์ฅํฉ๋๋ค.
์ฃผ์ ๋ณด์ ํค๋ ๋ฐ ๊ตฌํ ๋ฐฉ๋ฒ
๊ฐ์ฅ ์ค์ํ ๋ณด์ ํค๋์ ์ด๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1. Content-Security-Policy (CSP)
Content-Security-Policy(CSP) ํค๋๋ ๊ฐ์ฅ ๊ฐ๋ ฅํ ๋ณด์ ํค๋ ์ค ํ๋์ ๋๋ค. ์ด๋ฅผ ํตํด ๋ธ๋ผ์ฐ์ ๊ฐ ์คํฌ๋ฆฝํธ, ์คํ์ผ์ํธ, ์ด๋ฏธ์ง, ๊ธ๊ผด๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ ์ ์๋ ์์ค๋ฅผ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์น์ฌ์ดํธ์ ์ฃผ์ ๋ ์ ์ฑ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ XSS ๊ณต๊ฒฉ์ ์๋ฐฉํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๊ตฌํ:
CSP ํค๋๋ `Content-Security-Policy` ์ง์๋ฌธ์ผ๋ก ์ค์ ๋ฉ๋๋ค. ๊ฐ์ ์ง์๋ฌธ ๋ชฉ๋ก์ด๋ฉฐ, ๊ฐ ์ง์๋ฌธ์ ํน์ ๋ฆฌ์์ค ์ ํ์ ํ์ฉ๋๋ ์์ค๋ฅผ ์ง์ ํฉ๋๋ค.
์์:
Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:; font-src 'self'; connect-src 'self' wss://example.com;
์ค๋ช :
- `default-src 'self'`: ๋ ๊ตฌ์ฒด์ ์ธ ์ง์๋ฌธ์ ์ํด ๋ณ๋๋ก ๋ช ์๋์ง ์๋ ํ, ๋ชจ๋ ๋ฆฌ์์ค๋ ๋ฌธ์์ ๋์ผํ ์ถ์ฒ์์ ๋ก๋๋์ด์ผ ํจ์ ์ง์ ํฉ๋๋ค.
- `script-src 'self' https://example.com`: ๋์ผํ ์ถ์ฒ ๋ฐ `https://example.com`์์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- `style-src 'self' https://example.com`: ๋์ผํ ์ถ์ฒ ๋ฐ `https://example.com`์์ ์คํ์ผ์ํธ๋ฅผ ๋ก๋ํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- `img-src 'self' data:`: ๋์ผํ ์ถ์ฒ ๋ฐ ๋ฐ์ดํฐ URI(์ธ๋ผ์ธ ์ด๋ฏธ์ง)์์ ์ด๋ฏธ์ง๋ฅผ ๋ก๋ํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- `font-src 'self'`: ๋์ผํ ์ถ์ฒ์์ ๊ธ๊ผด์ ๋ก๋ํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- `connect-src 'self' wss://example.com`: ๋์ผํ ์ถ์ฒ ๋ฐ `wss://example.com`์ผ๋ก์ ์ฐ๊ฒฐ(์: AJAX, WebSockets)์ ํ์ฉํฉ๋๋ค.
์ค์ํ CSP ์ง์๋ฌธ:
- `default-src`: ๋ค๋ฅธ ์ง์๋ฌธ์ด ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ๋ชจ๋ ๋ฆฌ์์ค ์ ํ์ ์ ์ฉ๋๋ ๋์ฒด ์ง์๋ฌธ์ ๋๋ค.
- `script-src`: JavaScript ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `style-src`: ์คํ์ผ์ํธ ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `img-src`: ์ด๋ฏธ์ง ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `font-src`: ๊ธ๊ผด ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `media-src`: ์ค๋์ค ๋ฐ ๋น๋์ค ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `object-src`: Flash์ ๊ฐ์ ํ๋ฌ๊ทธ์ธ ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `frame-src`: ํ๋ ์ ๋ฐ iframe์ ์์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `connect-src`: ์คํฌ๋ฆฝํธ๊ฐ ์ฐ๊ฒฐํ ์ ์๋ URL(์: AJAX, WebSockets)์ ์ ์ดํฉ๋๋ค.
- `base-uri`: ๋ฌธ์์ <base> ์์์์ ์ฌ์ฉํ ์ ์๋ URL์ ์ ํํฉ๋๋ค.
- `form-action`: ์์์ ์ ์ถํ ์ ์๋ URL์ ์ ํํฉ๋๋ค.
CSP ๋ณด๊ณ ์ ์ฉ ๋ชจ๋:
CSP ์ ์ฑ ์ ์ํํ๊ธฐ ์ ์ ๋ณด๊ณ ์ ์ฉ ๋ชจ๋๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ด๋ฅผ ํตํด ๋ฆฌ์์ค๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ์ ์ฑ ์ ์ํฅ์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ํด `Content-Security-Policy-Report-Only` ํค๋๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์์:
Content-Security-Policy-Report-Only: default-src 'self'; script-src 'self' https://example.com; report-uri /csp-report-endpoint;
์ด ์์์์ CSP ์ ์ฑ ์๋ฐ ์ฌํญ์ `/csp-report-endpoint` URL๋ก ๋ณด๊ณ ๋ฉ๋๋ค. ์ด๋ฌํ ๋ณด๊ณ ์๋ฅผ ์์ ํ๊ณ ๋ถ์ํ๋ ค๋ฉด ์๋ฒ ์ธก ์๋ํฌ์ธํธ๋ฅผ ์ค์ ํด์ผ ํฉ๋๋ค. Sentry ๋ฐ Google CSP Evaluator์ ๊ฐ์ ๋๊ตฌ๋ CSP ์ ์ฑ ์์ฑ ๋ฐ ๋ณด๊ณ ์ ๋์์ด ๋ ์ ์์ต๋๋ค.
2. X-Frame-Options
X-Frame-Options ํค๋๋ ํด๋ฆญ์ฌํน ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ํด๋ฆญ์ฌํน์ ๊ณต๊ฒฉ์๊ฐ ํฉ๋ฒ์ ์ธ ์น์ฌ์ดํธ๋ฅผ ์ ์์ ์ธ iframe ๋ด์ ์ฝ์ ํ์ฌ ์ฌ์ฉ์๊ฐ ์ธ์ํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ๊ฒ์ ํด๋ฆญํ๋๋ก ์์ผ ๋ ๋ฐ์ํฉ๋๋ค.
๊ตฌํ:
X-Frame-Options ํค๋๋ ์ธ ๊ฐ์ง ๊ฐ๋ฅํ ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค.
- `DENY`: ์ถ์ฒ์ ๊ด๊ณ์์ด ํ์ด์ง๊ฐ ํ๋ ์์ ํ์๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- `SAMEORIGIN`: ํ๋ ์์ ์ถ์ฒ๊ฐ ํ์ด์ง์ ์ถ์ฒ์ ๋์ผํ ๊ฒฝ์ฐ์๋ง ํ์ด์ง๋ฅผ ํ๋ ์์ ํ์ํ ์ ์๋๋ก ํ์ฉํฉ๋๋ค.
- `ALLOW-FROM uri`: (์ฌ์ฉ๋์ง ์์ผ๋ฉฐ ๊ถ์ฅ๋์ง ์์) ํ๋ ์์ ์ถ์ฒ๊ฐ ์ง์ ๋ URI์ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ํ์ด์ง๋ฅผ ํ๋ ์์ ํ์ํ๋๋ก ํ์ฉํฉ๋๋ค.
์์:
X-Frame-Options: DENY
X-Frame-Options: SAMEORIGIN
๋๋ถ๋ถ์ ์น์ฌ์ดํธ์์๋ `SAMEORIGIN` ์ต์ ์ด ๊ฐ์ฅ ์ ํฉํฉ๋๋ค. ์น์ฌ์ดํธ๊ฐ ์ ๋๋ก ํ๋ ์ ์ฒ๋ฆฌ๋์ด์๋ ์ ๋๋ค๋ฉด `DENY`๋ฅผ ์ฌ์ฉํ์ญ์์ค. `ALLOW-FROM` ์ต์ ์ ๋ธ๋ผ์ฐ์ ํธํ์ฑ ๋ฌธ์ ๋ก ์ธํด ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅ๋์ง ์์ต๋๋ค.
์ค์: `X-Frame-Options`๋ ๋ ๊ฑฐ์๋ก ๊ฐ์ฃผ๋๋ฏ๋ก ๋ ๋์ ์ ์ด ๋ฐ ํธํ์ฑ์ ์ํด `X-Frame-Options` ๋์ CSP์ `frame-ancestors` ์ง์๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค. `frame-ancestors`๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์์ค๋ฅผ ํฌํจํ ์ ์๋ ์ถ์ฒ ๋ชฉ๋ก์ ์ง์ ํ ์ ์์ต๋๋ค.
3. Strict-Transport-Security (HSTS)
Strict-Transport-Security(HSTS) ํค๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTTPS๋ฅผ ํตํด์๋ง ์น์ฌ์ดํธ์ ํต์ ํ๋๋ก ๊ฐ์ ํฉ๋๋ค. ์ด๋ ๊ณต๊ฒฉ์๊ฐ ์์ ํ์ง ์์ HTTP ํธ๋ํฝ์ ๊ฐ๋ก์ฑ ์ฌ์ฉ์๋ฅผ ์ ์ฑ ์น์ฌ์ดํธ๋ก ๋ฆฌ๋๋ ์ ํ ์ ์๋ ์ค๊ฐ์ ๊ณต๊ฒฉ์ ๋ฐฉ์งํฉ๋๋ค.
๊ตฌํ:
HSTS ํค๋๋ ๋ธ๋ผ์ฐ์ ๊ฐ HTTPS๋ฅผ ํตํด์๋ง ์ฌ์ดํธ์ ์ ์ํด์ผ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํด์ผ ํ ์๊ฐ์ ์ด ๋จ์๋ก ๋ํ๋ด๋ `max-age` ์ง์๋ฌธ์ ์ง์ ํฉ๋๋ค. ๋ํ `includeSubDomains` ์ง์๋ฌธ์ ํฌํจํ์ฌ HSTS ์ ์ฑ ์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ์ ์ฉํ ์ ์์ต๋๋ค.
์์:
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
์ค๋ช :
- `max-age=31536000`: ๋ธ๋ผ์ฐ์ ๊ฐ 1๋ (31,536,000์ด) ๋์ HTTPS๋ฅผ ํตํด์๋ง ์ฌ์ดํธ์ ์ ์ํด์ผ ํ๋ค๋ ๊ฒ์ ๊ธฐ์ตํ๋๋ก ์ง์ ํฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ธด `max-age`๋ฅผ ๊ถ์ฅํฉ๋๋ค.
- `includeSubDomains`: HSTS ์ ์ฑ ์ ์น์ฌ์ดํธ์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ์ ์ฉํฉ๋๋ค.
- `preload`: ๋๋ฉ์ธ์ ๋ธ๋ผ์ฐ์ ์ HSTS ์ฌ์ ๋ก๋ฉ ๋ชฉ๋ก์ ํฌํจ์ํค๊ณ ์ถ๋ค๋ ๊ฒ์ ๋ํ๋ ๋๋ค. ์ด๊ฒ์ Google์์ ๊ด๋ฆฌํ๋ HSTS ์ฌ์ ๋ก๋ฉ ๋ชฉ๋ก์ ๋๋ฉ์ธ์ ์ ์ถํด์ผ ํ๋ ์ ํ์ ์ง์๋ฌธ์ ๋๋ค. ์ฌ์ ๋ก๋ฉ์ ์ฌ์ดํธ์ ์ฒ์ ์ฐ๊ฒฐํ๋ ์ฌ์ฉ์๊ฐ HTTPS๋ฅผ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
์ค์: HSTS๋ฅผ ํ์ฑํํ๊ธฐ ์ ์ ์ ์ฒด ์น์ฌ์ดํธ์ ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ด HTTPS๋ฅผ ํตํด ์ก์ธ์คํ ์ ์๋์ง ํ์ธํ์ญ์์ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์ ์ก์ธ์คํ์ง ๋ชปํ ์ ์์ต๋๋ค.
4. X-Content-Type-Options
X-Content-Type-Options ํค๋๋ MIME ์ค๋ํ ๊ณต๊ฒฉ์ ๋ฐฉ์งํฉ๋๋ค. MIME ์ค๋ํ์ ์๋ฒ๊ฐ ๋ค๋ฅธ ์ฝํ ์ธ ์ ํ์ ์ง์ ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค์ ์ฝํ ์ธ ์ ํ์ ์ถ์ธกํ๋ ค๋ ๊ธฐ์ ์ ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ํ์ผ์ ์คํ ๊ฐ๋ฅํ ์ฝ๋๋ก ์๋ชป ํด์ํ๋ฉด ๋ณด์ ์ทจ์ฝ์ ์ผ๋ก ์ด์ด์ง ์ ์์ต๋๋ค.
๊ตฌํ:
X-Content-Type-Options ํค๋๋ `nosniff`๋ผ๋ ๋จ ํ๋์ ๊ฐ๋ง ๊ฐ์ง ์ ์์ต๋๋ค.
์์:
X-Content-Type-Options: nosniff
์ด ํค๋๋ ๋ธ๋ผ์ฐ์ ์ ๋ฆฌ์์ค์ ์ฝํ ์ธ ์ ํ์ ์ถ์ธกํ์ง ๋ง๊ณ ์๋ฒ์์ ์ง์ ํ `Content-Type` ํค๋์๋ง ์์กดํ๋๋ก ์ง์ํฉ๋๋ค.
5. Referrer-Policy
Referrer-Policy ํค๋๋ ์ฌ์ฉ์๊ฐ ์น์ฌ์ดํธ์์ ๋ค๋ฅธ ์น์ฌ์ดํธ๋ก ์ด๋ํ ๋ ์ผ๋ง๋ ๋ง์ ๋ฆฌํผ๋ฌ ์ ๋ณด(์ด์ ํ์ด์ง์ URL)๊ฐ ์ ์ก๋๋์ง๋ฅผ ์ ์ดํฉ๋๋ค. ์ด๋ ๋ฏผ๊ฐํ ์ ๋ณด๊ฐ ์ 3์ ์ฌ์ดํธ๋ก ์ ์ถ๋๋ ๊ฒ์ ๋ฐฉ์งํ์ฌ ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ตฌํ:
Referrer-Policy ํค๋๋ ์ฌ๋ฌ ๊ฐ๋ฅํ ๊ฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ ๋ค๋ฅธ ์์ค์ ๋ฆฌํผ๋ฌ ์ ๋ณด๋ฅผ ์ ์กํ๋๋ก ์ง์ ํฉ๋๋ค.
- `no-referrer`: Referer ํค๋๋ฅผ ์ ๋ ๋ณด๋ด์ง ์์ต๋๋ค.
- `no-referrer-when-downgrade`: HTTPS์์ HTTP๋ก ์ด๋ํ ๋ Referer ํค๋๋ฅผ ๋ณด๋ด์ง ์์ต๋๋ค.
- `origin`: ๋ฌธ์์ ์ถ์ฒ๋ง ๋ณด๋ ๋๋ค (์: `https://example.com`).
- `origin-when-cross-origin`: ๋ค๋ฅธ ์ถ์ฒ๋ก ์ด๋ํ ๋๋ ์ถ์ฒ๋ฅผ ๋ณด๋ด๊ณ , ๋์ผํ ์ถ์ฒ๋ก ์ด๋ํ ๋๋ ์ ์ฒด URL์ ๋ณด๋ ๋๋ค.
- `same-origin`: ๋์ผ ์ถ์ฒ ์์ฒญ์ ๋ํด์๋ Referer ํค๋๋ฅผ ๋ณด๋ด์ง๋ง, ๊ต์ฐจ ์ถ์ฒ ์์ฒญ์ ๋ํด์๋ ๋ณด๋ด์ง ์์ต๋๋ค.
- `strict-origin`: ํ๋กํ ์ฝ ๋ณด์ ์์ค์ด ๋์ผํ๊ฒ ์ ์ง๋ ๋(HTTPS์์ HTTPS)๋ง ์ถ์ฒ๋ฅผ ๋ณด๋ด๊ณ , ๋ ์์ ํ ๋ชฉ์ ์ง(HTTPS์์ HTTP)๋ก๋ ๋ณด๋ด์ง ์์ต๋๋ค.
- `strict-origin-when-cross-origin`: ๋ค๋ฅธ ์ถ์ฒ๋ก ์ด๋ํ ๋ ์ถ์ฒ๋ฅผ ๋ณด๋ด์ง๋ง, ํ๋กํ ์ฝ ๋ณด์ ์์ค์ด ๋์ผํ๊ฒ ์ ์ง๋๋ ๊ฒฝ์ฐ(HTTPS์์ HTTPS)์๋ง ํด๋น๋ฉ๋๋ค. ๋์ผํ ์ถ์ฒ๋ก ์ด๋ํ ๋๋ ์ ์ฒด URL์ ๋ณด๋ ๋๋ค.
- `unsafe-url`: (๊ถ์ฅํ์ง ์์) ํญ์ ์ ์ฒด URL์ Referer ํค๋๋ก ๋ณด๋ ๋๋ค. ๊ฐ์ฅ ์์ ํ์ง ์์ ์ต์ ์ ๋๋ค.
์์:
Referrer-Policy: strict-origin-when-cross-origin
Referrer-Policy: no-referrer
`strict-origin-when-cross-origin` ์ ์ฑ ์ ์ข ์ข ๋ณด์๊ณผ ๊ธฐ๋ฅ์ฑ ์ฌ์ด์ ์ข์ ๊ท ํ์ ์ด๋ฃน๋๋ค. ๋ค๋ฅธ ์ถ์ฒ์ ์ ์ฒด URL์ ๋ณด๋ด์ง ์์์ผ๋ก์จ ์ฌ์ฉ์ ๊ฐ์ธ ์ ๋ณด๋ฅผ ๋ณดํธํ๋ ๋์์ ์น์ฌ์ดํธ๊ฐ ๊ธฐ๋ณธ์ ์ธ ์ถ์ฒ ์ ๋ณด๋ฅผ ์ถ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
6. Permissions-Policy (formerly Feature-Policy)
Permissions-Policy ํค๋(์ด์ ์๋ Feature-Policy๋ก ์๋ ค์ง)๋ฅผ ์ฌ์ฉํ๋ฉด ์น์ฌ์ดํธ ๋ฐ ํฌํจ๋ iframe์์ ์ฌ์ฉํ ์ ์๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ(์: ์นด๋ฉ๋ผ, ๋ง์ดํฌ, ์์น ์ ๋ณด)์ ์ ์ดํ ์ ์์ต๋๋ค. ์ด๋ ์ ์ฑ ์ฝ๋๊ฐ ์ฌ์ฉ์์ ๋ช ์์ ์ธ ๋์ ์์ด ๋ฏผ๊ฐํ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ์ก์ธ์คํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
๊ตฌํ:
Permissions-Policy ํค๋๋ ์ง์๋ฌธ ๋ชฉ๋ก์ ์ง์ ํ๋ฉฐ, ๊ฐ ์ง์๋ฌธ์ ํน์ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค. ๊ฐ ์ง์๋ฌธ์ ๊ธฐ๋ฅ ์ด๋ฆ๊ณผ ํ์ฉ๋ ์ถ์ฒ ๋ชฉ๋ก์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
์์:
Permissions-Policy: geolocation 'self' https://example.com; camera 'none'; microphone (self)
์ค๋ช :
- `geolocation 'self' https://example.com`: ์น์ฌ์ดํธ์ `https://example.com`์ด ์์น ์ ๋ณด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ํ์ฉํฉ๋๋ค.
- `camera 'none'`: ์น์ฌ์ดํธ ๋ฐ ๋ชจ๋ ํฌํจ๋ iframe์ ๋ํด ์นด๋ฉ๋ผ ๊ธฐ๋ฅ์ ๋นํ์ฑํํฉ๋๋ค.
- `microphone (self)`: ์น์ฌ์ดํธ๊ฐ ๋ง์ดํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋๋ก ํ์ฉํฉ๋๋ค. ๊ฐ๋ณ ์ถ์ฒ์ ๋ํ ๊ดํธ๋ฅผ ์ฌ์ฉํ ๋ค๋ฅธ ๊ตฌ๋ฌธ์ ์ ์ํ์ญ์์ค.
์ผ๋ฐ์ ์ธ Permissions-Policy ๊ธฐ๋ฅ:
- `geolocation`: ์์น ์ ๋ณด API์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `camera`: ์นด๋ฉ๋ผ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `microphone`: ๋ง์ดํฌ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `autoplay`: ๋ฏธ๋์ด ์๋ ์ฌ์ ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
- `fullscreen`: ์น์ฌ์ดํธ๊ฐ ์ ์ฒด ํ๋ฉด ๋ชจ๋๋ก ๋ค์ด๊ฐ ์ ์๋์ง ์ฌ๋ถ๋ฅผ ์ ์ดํฉ๋๋ค.
- `accelerometer`: ๊ฐ์๋๊ณ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `gyroscope`: ์์ด๋ก์ค์ฝํ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `magnetometer`: ์๋ ฅ๊ณ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `speaker`: ์คํผ์ปค์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `vibrate`: ์ง๋ API์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
- `payment`: Payment Request API์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ์ดํฉ๋๋ค.
7. ๊ธฐํ ๋ณด์ ํค๋
์์์ ๋ ผ์ํ ํค๋๊ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๊ณ ์ค์ํ์ง๋ง, ๋ค๋ฅธ ๋ณด์ ํค๋๋ ์ถ๊ฐ์ ์ธ ๋ณดํธ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค.
- X-Permitted-Cross-Domain-Policies: ์ด ํค๋๋ Adobe Flash Player ๋ฐ ๊ธฐํ ํ๋ฌ๊ทธ์ธ์ด ๊ต์ฐจ ๋๋ฉ์ธ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์ ์ดํฉ๋๋ค. ๊ถ์ฅ๋๋ ๊ฐ์ ์ผ๋ฐ์ ์ผ๋ก `none`์ ๋๋ค.
- Clear-Site-Data: ์น์ฌ์ดํธ๊ฐ ์ฌ์ฉ์๊ฐ ์ฌ์ดํธ๋ฅผ ๋ ๋ ๋ ๋ธ๋ผ์ฐ์ง ๋ฐ์ดํฐ(์ฟ ํค, ์ ์ฅ์, ์บ์)๋ฅผ ์ง์ธ ์ ์๋๋ก ํ์ฉํฉ๋๋ค. ์ด๋ ๊ฐ์ธ ์ ๋ณด์ ๋ฏผ๊ฐํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ฉํ ์ ์์ต๋๋ค.
- Expect-CT: ์ฌ๊ธฐ์ ์ผ๋ก ๋ฐ๊ธ๋ SSL ์ธ์ฆ์ ์ฌ์ฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋๋ ์ธ์ฆ์ ํฌ๋ช ์ฑ(Certificate Transparency)์ ํ์ฑํํฉ๋๋ค.
๋ณด์ ํค๋ ๊ตฌํ
๋ณด์ ํค๋๋ ์น ์๋ฒ ๋๋ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์ ๋ฐ๋ผ ๋ค์ํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์ ์์ต๋๋ค.
1. ์น ์๋ฒ ๊ตฌ์ฑ
์น ์๋ฒ(์: Apache, Nginx)๋ฅผ ๊ตฌ์ฑํ์ฌ HTTP ์๋ต์ ๋ณด์ ํค๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. ์ด๋ ์ข ์ข ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ๊ฐ์ฅ ์ง์ ์ ์ด๊ณ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ ๋๋ค.
Apache:
Apache ๊ตฌ์ฑ ํ์ผ(`.htaccess` ๋๋ `httpd.conf`)์ `Header` ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ณด์ ํค๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์์:
Header set Content-Security-Policy "default-src 'self'; script-src 'self' https://example.com;"
Header set X-Frame-Options "SAMEORIGIN"
Header set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
Header set X-Content-Type-Options "nosniff"
Header set Referrer-Policy "strict-origin-when-cross-origin"
Header set Permissions-Policy "geolocation 'self'"
Nginx:
Nginx ๊ตฌ์ฑ ํ์ผ(`nginx.conf`)์ `add_header` ์ง์๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ณด์ ํค๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
์์:
add_header Content-Security-Policy "default_src 'self'; script-src 'self' https://example.com;";
add_header X-Frame-Options "SAMEORIGIN";
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload";
add_header X-Content-Type-Options "nosniff";
add_header Referrer-Policy "strict-origin-when-cross-origin";
add_header Permissions-Policy "geolocation 'self';";
2. ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)
Cloudflare, Akamai, Fastly์ ๊ฐ์ ๋ง์ CDN์ ๋ณด์ ํค๋๋ฅผ ๊ตฌ์ฑํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ ํนํ ์ด๋ฏธ CDN์ ์ฌ์ฉํ๊ณ ์๋ ๊ฒฝ์ฐ ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ํธ๋ฆฌํ ๋ฐฉ๋ฒ์ด ๋ ์ ์์ต๋๋ค.
์์ (Cloudflare):
Cloudflare์์๋ "Rules" ๋๋ "Transform Rules" ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ณด์ ํค๋๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. URL ๋๋ ์์ฒญ ์ ํ๊ณผ ๊ฐ์ ๋ค์ํ ๊ธฐ์ค์ ๋ฐ๋ผ HTTP ํค๋๋ฅผ ์ถ๊ฐ, ์์ ๋๋ ์ ๊ฑฐํ๋ ๊ท์น์ ์ ์ํ ์ ์์ต๋๋ค.
3. ์๋ฒ ์ธก ์ฝ๋
์๋ฒ ์ธก ์ฝ๋(์: PHP, Python, Node.js ์ฌ์ฉ)์์๋ ๋ณด์ ํค๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์์ฒญ ๋๋ ์ฌ์ฉ์ ์ปจํ ์คํธ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํค๋๋ฅผ ์ค์ ํ๋ ๋ฐ ๋ ๋ง์ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค.
์์ (Node.js with Express):
const express = require('express');
const app = express();
app.use((req, res, next) => {
res.setHeader('Content-Security-Policy', "default-src 'self'; script-src 'self' https://example.com;");
res.setHeader('X-Frame-Options', 'SAMEORIGIN');
res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload');
res.setHeader('X-Content-Type-Options', 'nosniff');
res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin');
res.setHeader('Permissions-Policy', "geolocation 'self'");
next();
});
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(3000, () => {
console.log('Server listening on port 3000');
});
ํ ์คํธ ๋ฐ ๊ฒ์ฆ
๋ณด์ ํค๋๋ฅผ ๊ตฌํํ ํ์๋ ํค๋๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ํ ์คํธํ๊ณ ๊ฒ์ฆํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ฌ๋ฌ ์จ๋ผ์ธ ๋๊ตฌ๊ฐ ์ด๋ฅผ ๋์์ค ์ ์์ต๋๋ค.
- SecurityHeaders.com: ์ด ์น์ฌ์ดํธ๋ ์น์ฌ์ดํธ๋ฅผ ์ค์บํ๊ณ ๊ตฌํ๋ ๋ณด์ ํค๋ ๋ฐ ์ ์ฌ์ ๋ฌธ์ ์ ๋ํ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- Mozilla Observatory: ์ด ์จ๋ผ์ธ ๋๊ตฌ๋ ๋ณด์ ํค๋๋ฅผ ํฌํจํ์ฌ ์น์ฌ์ดํธ์ ๋ํ ์ผ๋ จ์ ํ ์คํธ๋ฅผ ์ํํ๊ณ ๊ฐ์ ์ ์ํ ๊ถ์ฅ ์ฌํญ์ด ํฌํจ๋ ์์ธ ๋ณด๊ณ ์๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ๊ฐ๋ฐ์ ๋๊ตฌ: ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ์ ๋๊ตฌ(์: Chrome DevTools, Firefox Developer Tools)๋ฅผ ์ฌ์ฉํ์ฌ HTTP ์๋ต ํค๋๋ฅผ ๊ฒ์ฌํ๊ณ ๋ณด์ ํค๋๊ฐ ์กด์ฌํ๋ฉฐ ์ฌ๋ฐ๋ฅธ ๊ฐ์ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
Chrome DevTools ์ฌ์ฉ ์์:
- Chrome DevTools๋ฅผ ์ฝ๋๋ค(ํ์ด์ง์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ๊ณ "๊ฒ์ฌ" ์ ํ).
- "Network" ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- ํ์ด์ง๋ฅผ ์๋ก ๊ณ ์นฉ๋๋ค.
- ์ฃผ์ ๋ฌธ์ ์์ฒญ(์ผ๋ฐ์ ์ผ๋ก ๋ชฉ๋ก์ ์ฒซ ๋ฒ์งธ ์์ฒญ)์ ์ ํํฉ๋๋ค.
- "Headers" ํญ์ผ๋ก ์ด๋ํฉ๋๋ค.
- "Response Headers" ์น์ ์ผ๋ก ์คํฌ๋กคํ์ฌ ๋ณด์ ํค๋๋ฅผ ํ์ธํฉ๋๋ค.
์ผ๋ฐ์ ์ธ ์ค์ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก
๋ณด์ ํค๋๋ฅผ ๊ตฌํํ ๋ ํผํด์ผ ํ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ์ค์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์ฒ ์ ํ๊ฒ ํ ์คํธํ์ง ์๊ธฐ: ํ๋ก๋์ ์ ๋ฐฐํฌํ๊ธฐ ์ ์ ํญ์ ์คํ ์ด์ง ํ๊ฒฝ์์ ๋ณด์ ํค๋๋ฅผ ํ ์คํธํ์ญ์์ค.
- ์ง๋์น๊ฒ ๊ด๋ํ CSP ์ ์ฑ ์ฌ์ฉ: ์ ํ์ ์ธ CSP ์ ์ฑ ์ผ๋ก ์์ํ์ฌ ํ์์ ๋ฐ๋ผ ์ ์ง์ ์ผ๋ก ์ํํ์ญ์์ค.
- HSTS์ ํ์ ๋๋ฉ์ธ์ ํฌํจํ๋ ๊ฒ์ ์๋ ๊ฒ: ๋ชจ๋ ํ์ ๋๋ฉ์ธ์ ๋ณดํธํ๋ ค๋ฉด HSTS ํค๋์ `includeSubDomains` ์ง์๋ฌธ์ ํฌํจํด์ผ ํฉ๋๋ค.
- ์ฌ์ฉ๋์ง ์๋ ํค๋ ์ฌ์ฉ: `X-Download-Options` ๋ฐ `X-Powered-By`์ ๊ฐ์ ์ฌ์ฉ๋์ง ์๋ ํค๋ ์ฌ์ฉ์ ํผํ์ญ์์ค.
- ๋ณด์ ํค๋ ์๋ฐ์ ๋ชจ๋ํฐ๋งํ์ง ์๊ธฐ: CSP ๋ณด๊ณ ์ ์ฉ ์๋ฐ์ ๋ชจ๋ํฐ๋งํ์ฌ ๋ฌธ์ ๋ฅผ ์๋ณํ๊ณ ํด๊ฒฐํ ์์คํ ์ ์ค์ ํ์ญ์์ค.
๋ชจ๋ฒ ์ฌ๋ก:
- ๊ฐ๋ ฅํ ๊ธฐ์ค์ ์ผ๋ก ์์: ์ต์ํ ๊ธฐ๋ณธ ๋ณด์ ํค๋(CSP, X-Frame-Options, HSTS, X-Content-Type-Options, Referrer-Policy, Permissions-Policy)๋ฅผ ๊ตฌํํ์ญ์์ค.
- ์ฝํ ์ธ ๋ณด์ ์ ์ฑ (CSP) ์ฌ์ฉ: ์ฝํ ์ธ ๋ณด์ ์ ์ฑ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๋ก๋ํ ๋ ์ ๋ขฐํด์ผ ํ๋ ์ถ์ฒ๋ฅผ ์ ์ํ์ฌ XSS ๊ณต๊ฒฉ์ ๋ฐฉ์งํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ์ ๊ธฐ์ ์ผ๋ก ๋ณด์ ํค๋ ๊ฒํ ๋ฐ ์ ๋ฐ์ดํธ: ์๋ก์ด ์ทจ์ฝ์ ์ด ๋ฐ๊ฒฌ๋๊ณ ๋ธ๋ผ์ฐ์ ๊ธฐ์ ์ด ๋ฐ์ ํจ์ ๋ฐ๋ผ ๋ณด์ ํค๋๋ฅผ ๊ทธ์ ๋ง๊ฒ ๊ฒํ ํ๊ณ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
- CDN ์ฌ์ฉ: CDN์ ๋ณด์ ํค๋์ ๊ตฌํ ๋ฐ ๊ด๋ฆฌ๋ฅผ ๋จ์ํํ ์ ์์ต๋๋ค.
- ๋ณด์ ํค๋ ๋ฐฐํฌ ์๋ํ: ์๋ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ํ๊ฒฝ์ ๊ฑธ์ณ ๋ณด์ ํค๋๊ฐ ์ผ๊ด๋๊ฒ ๋ฐฐํฌ๋๋๋ก ํ์ญ์์ค.
- ์ ๋ณด ํ์ : ๋ณด์ ๋ธ๋ก๊ทธ๋ฅผ ํ๋ก์ฐํ๊ณ , ๋ณด์ ์ปจํผ๋ฐ์ค์ ์ฐธ์ํ๊ณ , ๋ณด์ ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ์ฌ ์ต์ ๋ณด์ ์ํ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก์ ๋ํ ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ์ญ์์ค. OWASP(Open Web Application Security Project)๋ ์น ๋ณด์์ ๋ํ ์ ๋ณด๋ฅผ ์ป์ ์ ์๋ ํ๋ฅญํ ๋ฆฌ์์ค์ ๋๋ค.
๊ฒฐ๋ก
์น ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ์น์ฌ์ดํธ์ ์ฌ์ฉ์๋ฅผ ์ผ๋ฐ์ ์ธ ๊ณต๊ฒฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๋ฐ ํ์์ ์ธ ๋จ๊ณ์ ๋๋ค. ๊ฐ ํค๋์ ๋ชฉ์ ์ ์ดํดํ๊ณ ์ด ๊ฐ์ด๋์ ์ค๋ช ๋ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์น์ฌ์ดํธ์ ๋ณด์ ํ์ธ๋ฅผ ํฌ๊ฒ ํฅ์์ํค๊ณ ์ฌ์ฉ์์์ ์ ๋ขฐ๋ฅผ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋ณด์ ํค๋๊ฐ ํจ๊ณผ์ ์ผ๋ก ์๋ํ๊ณ ์งํํ๋ ๋ณด์ ์ํ์ ์ ์ํ๋๋ก ์ ๊ธฐ์ ์ผ๋ก ํ ์คํธํ๊ณ ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ ์์ง ๋ง์ญ์์ค. ๋ณด์ ํค๋๋ฅผ ๊ตฌํํ๋ ๋ฐ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ํฌ์ํ๋ฉด ์ฅ๊ธฐ์ ์ผ๋ก ์น์ฌ์ดํธ์ ์ฌ์ฉ์๋ฅผ ํด๋ก์์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๋ฐ ๋ณดํฌ์ด ๋ ๊ฒ์ ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ๋ณด์ ์ ๋ฌธ๊ฐ์ ์๋ดํ๊ฑฐ๋ ๋ณด์ ๊ฐ์ฌ ์๋น์ค๋ฅผ ์ฌ์ฉํ์ฌ ์น์ฌ์ดํธ์ ๋ณด์์ ํ๊ฐํ๊ณ ์ทจ์ฝ์ ์ ์๋ณํ๋ ๊ฒ์ ๊ณ ๋ คํ์ญ์์ค.